{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 决策边界"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn import datasets\n",
    "\n",
    "iris = datasets.load_iris()\n",
    "\n",
    "X = iris.data\n",
    "y = iris.target\n",
    "\n",
    "X = X[y<2,:2]\n",
    "y = y[y<2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n3+PX6W5J/9hjffTjN5HJ3cz2S3rB3U/1aXZa0nZ3v0nSZyV9dUOCa8873H2nqv/8u9fM3jnugFo2\nqH85H79pSTdLOurub5X0P5L+fLwhtapJ/3I+fpKkerjpLkn/PI6/P5HJXdVLv+8ys2ckfVHSbWZ2\nrLOBu19095fr309K2mxmWzc80iG5+4X65wuqxvt2dTW5IOmGjs/b6nVZGNS/zI/feUnn3f2J+vOX\nVCXDTjkfv4H9y/z4rbhd0ml3/68e30U/fhOZ3N394+6+zd1nVf1n03fc/f2dbczsWjOz+vddqvbV\nixse7BDM7FVm9pqV3yX9kaSfdDX7uqQP1Hftd0t6yd2f3+BQh9KkfzkfP3f/T0nPmdkb6lV7Jf20\nq1m2x69J/3I+fh3ep95DMtIGHL9Jr5ZZxcwOSpK7PyTpvZIOmdklSb+RdLfn88TX6yR9pf63MS3p\nH9z9W139OynpDklPS1qWdM+YYh1Gk/7lfPwk6c8kHa//0/4Xku4p6PhJg/uX9fGrLzreJelPO9Zt\n6PHjCVUAKNBEDssAQOlI7gBQIJI7ABSI5A4ABSK5A0CBSO4AUCCSOwAUiOQOAAX6f+v3SJu9PSdM\nAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1182dad30>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X[y==0,0], X[y==0,1], color=\"red\")\n",
    "plt.scatter(X[y==1,0], X[y==1,1], color=\"blue\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from playML.model_selection import train_test_split\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, seed=666)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LogisticRegression()"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from playML.LogisticRegression import LogisticRegression\n",
    "\n",
    "log_reg = LogisticRegression()\n",
    "log_reg.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 3.01796521, -5.04447145])"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "log_reg.coef_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-0.6937719272911228"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "log_reg.intercept_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "θ0+θ1x1+θ2x2=0\n",
    "def x2(x1):\n",
    "    return (-log_reg.coef_[0] * x1 - log_reg.intercept_) / log_reg.coef_[1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "x1_plot = np.linspace(4, 8, 1000)\n",
    "x2_plot = x2(x1_plot)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD8CAYAAACMwORRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl4VOX1wPHvS8IWVtmXkLAvQUUlIopKWJRVbK21Ktaq\ntajY1qpU5EcVoaK24q6IqLVaqbXuElaBsCiibIIkYd+SyL4FCGSb8/tjhhpikplk5s69c+d8nmce\nMnfucuZlONy899wzRkRQSinlLtXsDkAppVToaXJXSikX0uSulFIupMldKaVcSJO7Ukq5kCZ3pZRy\nIU3uSinlQprclVLKhTS5K6WUC8XadeAmTZpI27Zt7Tq8UkpFpNWrVx8Ukab+1rMtubdt25ZVq1bZ\ndXillIpIxphdgayn0zJKKeVCmtyVUsqFNLkrpZQLaXJXSikX0uSulFIupMldKaVcSJO7Ukq5kCZ3\npZQKk/yiYqYt2cbqXUcsP5ZtNzEppVS0EBEWZO7n8VkZ7DqUxz0pHeiZeI6lx9TkrpRSFtqy7ziT\nUjNYtuUgHZvV5e07etG3s9/uAUHT5K6UUhY4llfIcws2868Vu6hTI4YJ1yRxS+9EqseEZzZck7tS\nSoVQsUd479vdPDN/E8dOFXJTrwQeuKozjevWDGscmtyVUipEVmw/xGOfp7Nx73EuadeIR69Jonur\nBrbEosldKaWClH0kjydnb2TW93to3bA2r9x8EUPPa4ExxraYNLkrpVQV5RUUMW3xNl5buh1j4IGr\nOjPqyvbUqh5jd2ia3JVSqrJEhM/X/cBTczay59hpRvRoxcNDutKqYW27Q/ufgJO7MSYGWAXkiMjw\nUq+lAJ8BO3yLPhaRSaEKUimlnOL77GNMnJnOql1H6N6qPi/edCEXt21kd1g/UZkz9/uATKB+Oa8v\nK530lVLKLQ6eyOfpuZv47+osGtepwd9+cR7X92xDTDX75tUrElByN8bEA8OAycADlkaklFIOUlDk\n4e3lO3lx4RZOFRZz5+Xt+MOATtSvVd3u0CoU6Jn788BDQL0K1rnMGLMeyAHGiEh66RWMMaOAUQAJ\nCQmVDFUppcIrbeN+/pqawfaDJ+nXpSl/GZ5Eh6Z17Q4rIH6TuzFmOLBfRFb75tbLsgZIEJETxpih\nwKdAp9Irich0YDpAcnKyVDlqpZSy0LYDJ3g8NYO0TQdo36QOb912Mf26NrM7rEoJ5My9DzDCl7Rr\nAfWNMe+KyC1nVhCR3BI/zzbGTDXGNBGRg6EPWSmlrJF7upAXF2zhn8t3Urt6DH8Z1o1bL21LjdjI\na6DrN7mLyDhgHPyvKmZMycTuW94C2CciYozphbeV8KHQh6uUUqFX7BE+WJXF0/M2cTivgF8lt+HB\nq7vQtF54WwaEUpXr3I0xdwOIyDTgeuAeY0wRcAq4UUR02kUp5Xgrdx5m4sx0NuTkkpx4Dm+P6MW5\nre1pGRBKxq4cnJycLKtWrbLl2CrCzZgB48fD7t2QkACTJ8PIkXZHpSLMD0dP8eScjcxc9wMtG9Ri\n3NBuXHN+S1tbBgTCGLNaRJL9rad3qKrIMmMGjBoFeXne57t2eZ+DJngVkNOFxby2ZDuvLtmKCPxx\nQCfu7tueuBruSod65q4iS9u23oReWmIi7NwZ7mhUBBERZn+/lydmZ5Jz9BTDzmvJw0O60qZRnN2h\nVYqeuSt32r27csuVAjJ+yGXizHS+2XGYbi3r88wNPejdvrHdYVlKk7uKLAkJZZ+5601xqgyHTuTz\nzBeb+c+3u2lQuzqTf34uN16c4NiWAaGkyV1FlsmTz55zB4iL8y5Xyqew2MO/vt7F8ws2c7KgmN9c\n1pY/DehMgzhntwwIJU3uKrKcuWiq1TKqHEs3H2BSagZb95/gik5NeHR4Ep2aV9Q5xZ00uavIM3Kk\nJnP1EzsPnuTxWRksyNxPYuM43rg1mQHdmjm+tNEqmtyVUhHtRH4RLy3awj++3EGNmGo8PKQrt/dp\nS81Y+78NyU6a3JVSEcnjET5ak83f523iwPF8ru8Zz0ODutCsfi27Q3METe5KqYizZvcRJn6ezrrs\nY1yY0JA3bk2mR5uGdoflKJrclVIRY++x0/xt7kY+WZtD8/o1ee5XPbi2R2uqRUFpY2VpcldKOd7p\nwmLe/HIHr6Rtpcgj3NuvA6NTOlKnpqaw8ujIKKUcS0SYl76PybMzyDp8ikHdmzN+aBIJjSOrZYAd\nIq8DvXKHGTO8fWKqVfP+OWOG3REph9m09zgj3/iGu99dTVz1WGbceQmv/TpZE3uA9MxdhZ92dlQV\nOJpXwLNfbObdFbuoV6s6k67tzs29EoiN0XPRytCukCr8tLOjKkNRsYd/f7ubZ7/YTO6pQm7pncj9\nAztzTp0adofmKNoVUjmXdnZUpSzfepCJMzPYtO84l3VozKPXJNG1RX27w4pomtxV+GlnR+Wz+1Ae\nk2dnMC99H20a1WbaLT0Z1L151LYMCCVN7ir8tLNj1DuZX8TUxVt5fdkOYqsZ/jyoC7+9vB21qkd3\ny4BQ0uSuwk87O0Ytj0f4bF0OT83ZyL7cfH5+YWvGDu5KiwbaMiDUNLkre2hnx6izLusoj81MZ+3u\no/SIb8DUkT3pmXiO3WG5ltYWqfJpLboKgf3HTzPmg3Vc+8pXZB0+xdPXn88no/toYreYnrmrsmkt\nugpSflExb321k5cWbqGg2MNdfdvz+34dqVcrer4NyU5a567KprXoqopEhIWZ+3l8VgY7D+UxsFtz\nxg/rRrsmdewOzRW0zl0FR2vRVRVs2XecSakZLNtykI7N6vL2Hb3o27mp3WFFJU3uqmxai64q4Vhe\nIc8v3Mw7X+8irkYMjw5P4teXJlJdWwbYRpO7KpvWoqsAFHuE/6zczTPzN3Mkr4CbeiXw4FWdaVy3\npt2hRb2Ak7sxJgZYBeSIyPBSrxngBWAokAfcJiJrQhmoCjOtRVd+rNh+iIkzM8jck0uvdo2YcE0S\n3Vs1sDss5VOZ35nuAzLLeW0I0Mn3GAW8GmRcyglGjvRePPV4vH9GQmLX8k3LZR/J494Za7hx+gpy\nTxXyys0X8f6o3prYHSagM3djTDwwDJgMPFDGKtcC74i39GaFMaahMaaliOwJXahK+aHlm5bKKyhi\n2pLtvLZkG8bA/QM7c1ff9toywKECnZZ5HngIqFfO662BrBLPs33LNLmr8Bk//uxrBOB9Pn68Jvcg\niAgz1+/hydmZ7Dl2mhE9WvHwkK60aljb7tBUBfwmd2PMcGC/iKw2xqQEczBjzCi80zYkaNWFCjUt\n3wy5DTnHeOzzdFbtOkL3VvV58aYLubhtI7vDUgEI5My9DzDCGDMUqAXUN8a8KyK3lFgnB2hT4nm8\nb9lZRGQ6MB28NzFVOWqlyqLlmyFz8EQ+U+Zt4v1VWTSKq8FT153HL5PbEFNNW/FGCr8XVEVknIjE\ni0hb4EZgUanEDvA5cKvx6g0c0/l2FXaTJ3vLNUvS8s1KKSjy8May7fR7ejEfrs7mzsvbkfbnFG7s\nlaCJPcJUuc7dGHM3gIhMA2bjLYPcircU8vaQRKdUZWj5ZlDSNu7nr6kZbD94kpQuTXlkeBIdmta1\nOyxVRdpbRllj9GiYPh2KiyEmxlu1MnWq3VGpMmw7cILHUzNI23SA9k3q8MjwJPp1bWZ3WKoc2ltG\n2Wf0aHi1xK0OxcU/PtcE7xi5pwt5aeEW3vpqJ7WrxzB+aDd+c1lbasRqywA30DN3FXqxsd6EXlpM\nDBQVhT8edZZij/Dh6iyenreJQycL+FVyGx68ugtN62nLgEigZ+7KPmUl9oqWq7BZufMwE2emsyEn\nl+TEc3jrtl6cF693lrqRJncVejEx5Z+5K1v8cPQUT83ZyOfrfqBlg1q8cOMFjOjRCm9bKOVGmtxV\n6I0adface8nlKqxOFxYzfel2Xl28DY8IfxzQibv7tieuhv7Tdzv9G1ahd+aiqVbL2EZEmP39Xp6Y\nnUnO0VMMO68lDw/pSptGcf43Vq6gyV1ZY+pUTeY2yfghl4kz0/lmx2G6tqjHe7/rzaUdGtsdlgoz\nrXmKZgMHgjE/PgYOtDuiwGhb3zIdPlnA+E++Z/hLy9i87ziP/+xcZv3xCk3sUUrP3KPVwIGwcOHZ\nyxYu9C5fsMCemAKhbX1/orDYw7++3sXzCzZzsqCY31zWlj8N6EyDuOp2h6ZspHXu0aqiKgmbPhMB\nadu27OZgiYneLxSJMks3H2BSagZb95/gik5NeHR4Ep2al9eZW7mB1rkrd9K2vgDsPHiSx2dlsiBz\nH4mN43j91mQGdmumpY3qfzS5q8gS5W19T+QX8fKirfzjyx1UjzE8PKQrt/dpS81YvYdAnU2Te7Qa\nMOCnc+5nljvZ5Mlnz7lDVLT19XiEj9Zk8/d5mzhwPJ/re8bz0KAuNKtfy+7QlENpco9WCxb89KLq\ngAHOvpgKUdnWd83uI0z8PJ112ce4oE1DXr81mQvaNLQ7LOVwWgoZzW6/3Xsh0hjvn7dXog2/v3JE\nK8sVR470Xjz1eLx/ujSx78s9zQPvf8d1U5ez59hpnr2hBx/fc5kmdhUQPXOPVsGUFPrbVssVg3K6\nsJg3v9zBK2lbKSoW7u3XgdEpHalTU/+5qsBpKWS0Cqak0N+2Wq5YJSLCvPR9TJ6dQdbhUwzq3pzx\nQ5NIaKwtA9SPtBRSVSyYkkJ/22q5YqVt2nucSanpfLX1EJ2b12XGnZfQp2MTu8NSEUyTe7QKpqTQ\n37ZRXq5YGUfzCnj2i828u2IX9WpVZ9K13bm5VwKxMXo5TAVHP0HRavJkbwlhSYGWFPrbNph9R4mi\nYg/vfL2TlCmLeXfFLm7pncjiMSncemlbTewqJPTMPVoFU1Lob9soLFesjOVbDzJxZgab9h3n0vaN\nmTAiia4t6tsdlnIZvaCqVJhkHc5j8qxM5qbvpU2j2owfmsSg7s21ZYCqlEAvqOrvf+FgZ4tabY9r\nu5P5RTw9byMDnl3Cks0H+POgLnxxf18Gn9tCE7uyjE7LWM3Omm+tN7eViPDpdzk8NWcj+3Lz+fmF\nrRk7uCstGmjLAGU9nZaxmp0131pvbpt1WUeZODOdNbuPcn58AyZc052eiefYHZZyAa1zdwo7a761\n3jzs9h8/zd/nbuLD1dk0qVuTp68/n19cFE+1ajr9osJLk7vV7Kz51nrzsMkvKuatr3by8qKt5BcV\nc1ff9vy+X0fq1dJvQ1L20AuqVrOz5lvrzS0nIizI2Meg55by1JyN9G7fiPn392XckG6a2JWt/J65\nG2NqAUuBmr71PxSRCaXWSQE+A3b4Fn0sIpNCG2qEsrPmW+vNLbV1/3EmpWaydPMBOjary9t39KJv\n56Z2h6UUENiZez7QX0R6ABcAg40xvctYb5mIXOB7aGIvyc4WtV99BdnZ3u9Fzc72Pj9j9GiIjfW2\n/I2N9T4vycoyyggu0Tx2qpCJM9MZ9Pwy1u4+wqPDk5hz3xWa2JWj+D1zF285zQnf0+q+h4O/QVn9\nz+jR8OqrPz4vLj77eXmvTZ1qbRllhJZoFnuE/6zczTPzN3Mkr4CbeiXw4FWdaVy3pt2hKfUTAZVC\nGmNigNVAR+AVERlb6vUU4GMgG8gBxohIekX7jJpSSDvFxnqTdmkxvu/bLO+1oiJryygjsERzxfZD\nTJyZQeaeXHq1a8SEa5Lo3qqB3WGpKBRoKWSl6tyNMQ2BT4A/iMiGEsvrAx4ROWGMGQq8ICKdyth+\nFDAKICEhoeeusv6Bq9Cp6t2PIt7pkrI+G8Z4p5eCYeW+Qyz7SB5Pzt7IrO/30Lphbf5vaDeGnqd3\nlir7WNJ+QESOAmnA4FLLc0XkhO/n2UB1Y8xPmlGLyHQRSRaR5KZNdX7ScmfO0MtaXtFrUH65ZCjK\nKK3cd4icKijm2S82M+CZJSzcuI/7B3ZmwQN9GXZ+S03sKiL4Te7GmKa+M3aMMbWBq4CNpdZpYXyf\neGNML99+D4U+XFUpZ+axy1pe0WtgbRmlg0s0RYTP1/1A/2cW8+LCLVzdvQWLHkzhvoGdqF2jnP8Q\nlXKgQG5iagm87Zt3rwb8V0RSjTF3A4jINOB64B5jTBFwCrhR7OproH40dar3z+nTvfPrMTHe5H1m\neUWvWVlG6dASzQ05x5g4M52VO4/QvVV9XrjxQnq1a2RrTEpVld8zdxFZLyIXisj5InLumTJHEZnm\nS+yIyMsi0l1EeohIbxFZbnXgESWYsj9/5YrB6NMH4uO9+46P9z4PFX9x21keWsrBE/k8/NF6rnn5\nSzKyTsK35zHn/su5oV+jSKrQVOpsImLLo2fPnhIV3n1XJC5OxHsJ0fuIi/Mu9+eee87e7szjnnsC\nO3ZF2/uLy864wyS/sFheX7pNzn10rnQYN0tufjpd6jQsqNJbVipcgFUSQI7VrpBWC6bsr6JSxqIi\n/8euaPv4+IrjsjPuMEjbtJ+/pmaw/cBJUro05ZHhSQy4uG6kVWiqKGRJKWQoRU1yD6bsr6KqjED+\n3ira3piK47IzbgttP3CCv6ZmkLbpAO2b1OGR4Un069oMiKgKTRXFtOWvUwTTmTEmpuKbkILZvrwz\n9zNx2Rm3BXJPF/LSwi38c/lOasXGMH5oN35zWVtqxP542UmbaCo30a6QVgum7M9fuWIw2/uLy864\nQ8jjEd5fuZv+Uxbzxpc7uO7CeBaNSeF3V7Y/K7GDoys0laq8QCbmrXhEzQVVEe8VucREEWO8f1bm\nCt0994jExHiv7sXEVP6iZEXb+4vLzrhDYOWOQzL8xWWSODZVfjH1K1mfddTvNsG8ZaXCAb2gqqLV\nnmOneHL2Rj5f9wMt6tdi3NCujOjRSu8sVa5gSfsBFYEqqrGP4La7ZTldWMyLC7fQf8oS5qXv5Y/9\nO7JoTF+uvaC17YndZUOtIoBeUHWzilrrQkS23S2LiDBnw14mz8ok5+gphp3XkoeHdKVNozj/G4dB\nhHY4VhFOp2XcrKJadYi4trtlydyTy8SZ6azYfpiuLeox4ZruXNqhsd1hnSUCOxwrB9NSSOXt21KZ\n5f5ec5DDJwt4Zv4m3vt2Nw1qV+fxn53LjRe3ITbGeTONVflrUCpYmtzdzF/hdgQWdRcWe3h3xS6e\n+2IzJwuKufXSttw/sDMN4pz7ZdRaP6/s4LzTHBU6FRVuR2BR97ItBxj6wjImzsygR5uGzL3vCh4b\n0d3RiR0icqiVC+iZu5sF0lrXYW13y7Lz4Eken5XJgsx9JDaO4/VbkxnYrZntFTCBcmiHY+VyeuYe\nqGBq2fxta2Vb34o4qO1uWU7kF/HUnI1c/dxSvt52kLGDuzL//iu5Kql5lRO7XSWJ/oY6UkslIzXu\nqBDInU5WPCLqDtVg2t/629bK9rjBxG2j4mKPfLAqS5If/0ISx6bKg//9TvYdOxX0fp06HE6Ny59I\njTvSoXeohlAwtWz+trWyPW4E1uCt3X2Ex2ZmsC7rKBe0achjI7pzQZuGIdm3U4fDqXH5E6lxRzpt\n+RtKwfSC9betle1xI6iH7b7c0/xtzkY+XptDs3o1eXhIV352QWuqVQvdvLpTh8OpcfkTqXFHOm0/\nEErl1awFUsvmb9vy2uCGoj1uMHGHyenCYl5J20q/KYtJXb+H0SkdSBuTwnUXxYc0sYNzh8OpcfkT\nqXFHC03ugQimls3ftla2x3VwDZ6IMC99L1c/t5Sn523i8o5NWPBAXx4a3JU6Na0p4nLqcDg1Ln8i\nNe6oEcjEvBWPiLqgKhJcL1h/21rZHteBPWw37smVm1//WhLHpspVzy6WZZsPhO3YDhwOEXFuXP5E\natyRjAAvqGpyDwcr/2MYMODscoUBA0IXd4gdOZkvj376vbQfN0vOf2ye/POrHVJYVGx3WK4XzLmD\nJm/n0eTuFFaWUZZO7A5N8IVFxfLO8h3SY+I8afdwqjzy6fdy+ES+3WFFhWAqbbXU0ZkCTe5aLWM1\nK8soHfxF1Gcs33aQSTMz2Lj3OJe2b8yEEUl0bVHf7rCiRjCVtlrq6EzaFdIpgmkJGMHtBLMO5zF5\nViZz0/cSf05tpt1yEYO6t4iYlgFuUVZir2h5SRH88VNocrdeMC0BI7Cd4Mn8Il5dvI3py7YTYwx/\nHtSF317ejlrVQ1DaqSotJqb8M3d/IvDjp0rQUkirWVlGOWBA2duVt9xCIsKna3Po/8xiXk7bytBz\nW5A2JoV7+3XUxG6jYCpttdQxwgUyMW/FI2ouqIq4vlpmXdYR+fkrX0ri2FS55qVlsmrnobDHoMqn\n1TLuQqguqBpjagFLgZp4p3E+FJEJpdYxwAvAUCAPuE1E1lS036i5oOpi+4+f5um5m/hgdTZN6tbk\nocFduN6CO0uVUj8KZfuBfKC/iPQALgAGG2N6l1pnCNDJ9xgFvFrJeO3nr3epXb1N/bUDtiHu/KJi\nXluyjf5TlvDpdznc1bc9aWP6ckNym/8l9mAOG+xbrohd21rJqR9dZbNATu/PPIA4YA1wSanlrwE3\nlXi+CWhZ0b4cNS3jr6DXroJff0XKYY7b4/HIgoy90vfviyRxbKrc8da3sv3AiZ+sF8xhg33LFbFr\nWys59aOrrEMob2ICYoDvgBPA38p4PRW4vMTzhUByRft0VHJPTCw7oyQmBva6Vc5MlJZ+xMSEPe4t\n+3Ll129+I4ljU6X/lDRJ27iv3HWDOWywb7kidm1rJad+dJV1Ak3ulbqJyRjTEPgE+IOIbCixPBV4\nSkS+9D1fCIwVkVWlth+Fd9qGhISEnrvKqrOyg7/epXb1NvV3k1IY4j52qpAXFmzhna93UrtGDPcP\n7MyvL02kekz5M3rBHDbYt1wRu7a1klM/uso6lrT8FZGjQBowuNRLOUCbEs/jfctKbz9dRJJFJLlp\n06aVObS1/PUutau3qb92wBbGXewR/v3NbvpNWcxby3dww8VtWDwmhTsub1dhYg/ysEG/Zavicmp7\nW6d+dJUD+Du1B5oCDX0/1waWAcNLrTMMmAMYoDfwrb/9OmpaxqkTlzbNua/YdlCGPL9UEsemyi+n\nLZcNOUcrFbbOuYePUz+6yjqEas4dOB9YC6wHNgCP+pbfDdzt+9kArwDbgO/xM98uTkvuIv4Leu0q\n+PVXpBzCuLMOn5TRM1ZL4thUufSJBTJzXY54PJ4qhR3McAX7lq2Ky6k130796CprhCy5W/VwXHL3\nx8X/QvLyi+TZ+Zuk8/jZ0uUvs+X5LzZLXn6RbfHYmawq2reVcbnxPx1lDU3uoeTS3209Ho98/l2O\nXPrEAkkcmyq///cayT6SZ2tMdk4zVLRvK+Ny43SRsk6gyV1b/gbChb1PN+QcY9LMDL7deZjureoz\n4Zru9GrXyO6w/A61lX8VFe0brIvLrm1VZAq0WkaTeyBcVE928EQ+z8zfxH9WZtEorgZ/HtSFXya3\nIcYhLQPsLO2raN9gXVxuLNFU1rGkFDJquaCerKDIwxvLttNvymI+WJXNb/u0Y9GYFG7sleCYxA72\nlvZVtG8r43Jjiaaynyb3QER479PFm/Yz+IWlPD4rk4sSzmHun67kL8OTaFC7ut2h/YS/obbyr6Ki\nfVsZl13bKpcLZGLeikdEXVAViciShG37j8vtb30riWNTJeXpNFmYudfukAKi1TJaLaPKh15QjV65\npwt5edFW3vpqBzVjY7hvQCd+c1lbasTqL2pKRTqdc49CHo/w/srd9J+ymNeXbee6C+NJG5PC765s\n76rE7q8lsNuOC9a17dV2wC4WyOm9FY+Im5ZxuJU7DsnwF5dJ4thUuW7qV7I+q3ItAyKFv/YEbjuu\niHW17FojH5nQaZnosOfYKZ6as5HPvvuBFvVrMW5oV0b0aIWpqL1iBIuNLf8Ln4uK3HdcsK6WXWvk\nI1Og0zKx4QhGhd7pwmJeX7qdqYu3USzCH/t35O6UDsTVcPdfaVkJtqLlkX5cgN27K7fc7v0qZ3B3\nJnAhEWHuhr1Mnp1J9pFTDD2vBeOGdKNNozj/G7tATEz5Z9BuPC54a9bLOsMOtpbdqv0qZ3DPVbYo\nkLknl5teX8E9M9ZQt2Ys7/2uN1NH9oyaxA4walTllkf6ccG6WnatkXe5QCbmrXjoBdXAHTqRL+M/\nWS/tHk6VCybOk399vVMKi4rtDss2/loCu+24ItbVsmuNfORBu0JGvoKiYvnHl9vlvAlzpf24WTLh\nsw1y5GR+2I5v1z98K3vBW3lspcJBk3uEW7p5vwx8ZrEkjk2Vka+vkE17c8N6fLvK5Kz8Ficrj61U\nuASa3LUU0mF2HTrJ47My+SJjH4mN4/jLsCQGdmsW9tJGu8rkgjlusOWKWhqoIoGWQkaYE/lFvJK2\nlTeX7aB6jGHs4K7ccXlbasaGoRyjDHaVyQVz3GDLFbU0ULmJJnebeTzCJ2tz+Nvcjew/ns8vLorn\nocFdaF6/lq1x2VUmF8xxgy1X1NJA5SZaCmmjtbuP8PNXl/PgB+to1bA2n97bh2du6GF7Ygf7yuSC\nOW6w5YpaGqhcJZCJeSse0XxBde+xU3L/+2slcWyqXPz4F/LR6iwpLvbYHdZPaLWMXkxVzoNWyzjP\nqYIieXnRFun2yBzp9H+z5W9zMuX46UK7w7KFVf3LNTkrtws0ueucexiICPMz9jF5Via7D+dxdVJz\nxg/rRmLjOnaHZosZM7xTJXl53ue7dv04dTJyZNW3harvVym30VJIi23ed5xJMzP4cutBOjevy6PD\nu3N5pyZ2h2WrYEoOK9oWtJRRuZ+WQtrsaF4Bz32xmXe/2U3dmrFMHNGdkZckEBuj17CDKTmsyrZa\nyqiikSb3ECsq9vDeyiyenb+JY6cKGXlJIg9c1Zlz6tSwOzTHCKbk0N+2WsqolJeeRobQ8m0HGf7S\nlzzy6Qa6tqjP7Puu4K8/O1cTeynBlBxWtK2WMir1Iz1zD4Gsw3k8MTuTORv2En9ObabdchGDurdw\n7bchBevMxc3x471TJgkJ3gQcyEXPQLatyn6Vchu/F1SNMW2Ad4DmgADTReSFUuukAJ8BO3yLPhaR\nSRXt1w0XVPMKipiato3py7YTYwz39uvAnVe0p1Z1e1oGKKXcL9ALqoFMyxQBD4pIEtAbuNcYk1TG\nestE5AJRZMpQAAALIUlEQVTfo8LEHulEhE/X5tB/yhJeTtvK0HNbkDYmhd/37xRRiX3GDG/1iR3f\nfF/Rse2MyypufE/K2fxOy4jIHmCP7+fjxphMoDWQYXFsjrQ++ygTZ2awetcRzo9vwCsjL6RnYiO7\nw6q0YGrNrTw2uK9W3c6xVtGrUnXuxpi2wFLgXBHJLbE8BfgYyAZygDEikl7RviJtWmb/8dM8PXcT\nH67JpnGdmjw0uAvXXxRPtWqROa9uZ3vbaKtV11bCKpQCnZYJOLkbY+oCS4DJIvJxqdfqAx4ROWGM\nGQq8ICKdytjHKGAUQEJCQs9dZX3iHaagyMM/l+/gxYVbyS8q5o4+7fh9/47Uq1Xd7tCCUq2a9+so\nSjMGPB77jg32xWUVO8dauU8o59wxxlQHPgJmlE7sACKSKyInfD/PBqobY35yG6aITBeRZBFJbtq0\naSCHto2IsDBzH4OeX8oTszdySbtGzL+/L+OGdov4xA7l136Hoya8omPbGZdV3PielPP5Te7GW8/3\nJpApIs+Ws04L33oYY3r59nsolIGG09b9J/jNWyv57durqGbgn7dfzJu3XUy7Ju7pBWNnTXi01aq7\n8T2pCOCvsxhwOd4SyPXAd77HUOBu4G7fOr8H0oF1wArgMn/7dWJXyKN5BTLx83TpMG6WnDthrryx\nbLsUFBXbHZZl7OygGG2dHd34npQ90O9QDVyxR3h/ZRZT5m/iSF4BN16cwJirO9O4bk27Q/NrxozI\nvGln9GiYPt37zUkxMd7qkalT7Y5KKefTxmEB+mb7ISbOzCBjTy692jZiwogkurdqYHdYAYnUErvR\no+HVV398Xlz843NN8EqFRtSeueccPcUTszOZtX4PrRrU4v+GdWPYeS0jqmVApJbYxcaW/12nRUXh\nj0epSKJn7uU4VVDMa0u3MW3JNgD+NLATd13Zgdo1IufO0jOCaZ1rp7ISe0XLlVKVFzXJXURIXb+H\nJ2dn8sOx0ww/vyXjhnajdcPadodWZcG0zrVTTEz5Z+5KqdCIipa/G3KO8avXVvCH99bSMK4G/73r\nUl6++aKITuwQuSV2JVsNBLJcKVV5rj5zP3QinynzN/GflVmcE1eDJ687jxuS2xAToS0DSgumda6d\nzlw01WoZpazjyjP3wmIPbyzbTsqUxXywKps7+rQjbUwKN/VKsCax29jyb+RI78VTj8f7Z+nE7tRu\nhH36QHy89xb8+Hjvczdz6t+DcrFAiuGteFh1E1Paxn3Sf0qaJI5NlVvf/Ea27DtuyXH+5913ReLi\nRLztQ7yPuDhH3KXi1NCcGpdVou39KmsRbTcx7Th4kr+mZrBo437aNanDI8O70a9LM+tLGx1cj+jU\n0Jwal1Wi7f0qa4W8K2SohSq5Hz9dyMuLtvKPr3ZQMzaGPw7oyG2XtaNGbJhmnBzc8s+poTk1LqtE\n2/tV1nJ9nbvHI3y4Opu/z9vIoZMF/LJnPH8e1JWm9cLcMsDB9YhODc2pcVkl2t6vcoaIvKC6etdh\nrn3lKx76aD2Jjevw2b19+Pv1PcKf2MHR9YhODc2pcVkl2t6vcohAJuateFT1gupHq7MkcWyqXDJ5\ngXy6Nls8Hk+V9hNSDm7559TQnBqXVaLt/Srr4NYLqsfyCnn7653ceUU74mpE7KySUkpVSUi/iclJ\nGsRV548DOmliV5YIph5da9mVk2iGVMonmBbKkdp+WblXxE3LKGWVYOrRtZZdhYtrp2WUskowLZQj\ntf2yci9N7kr5lFd3Hkg9ejDbKmUFTe5K+QRTj6617MppNLkr5TNypLcNcWKitzVAYqL3eSAXRIPZ\nVikr6AVVpZSKIHpBVSmlopgmd6WUciFN7kop5UKa3JVSyoU0uSullAtpcldKKRfym9yNMW2MMWnG\nmAxjTLox5r4y1jHGmBeNMVuNMeuNMRdZE65SSqlABHLmXgQ8KCJJQG/gXmNMUql1hgCdfI9RwKsh\njVJVmbahVSo6+U3uIrJHRNb4fj4OZAKtS612LfCO74tCVgANjTEtQx6tqpQzbWh37fJ+QfOZNrSa\n4JVyv0rNuRtj2gIXAt+Ueqk1kFXieTY//Q9Ahdn48T/2Fz8jL8+7XCnlbgEnd2NMXeAj4E8ikluV\ngxljRhljVhljVh04cKAqu1CVoG1olYpeASV3Y0x1vIl9hoh8XMYqOUCbEs/jfcvOIiLTRSRZRJKb\nNm1alXhVJWgbWqWiVyDVMgZ4E8gUkWfLWe1z4FZf1Uxv4JiI7AlhnKoKtA2tUtErkO9Q7QP8Gvje\nGPOdb9n/AQkAIjINmA0MBbYCecDtoQ9VVdaZdrPjx3unYhISvIld29Aq5X7a8lcppSKItvxVSqko\npsldKaVcSJO7Ukq5kCZ3pZRyIU3uSinlQprclVLKhTS5K6WUC9lW526MOQDsquLmTYCDIQwnVJwa\nFzg3No2rcjSuynFjXIki4rd/i23JPRjGmFWBFPGHm1PjAufGpnFVjsZVOdEcl07LKKWUC2lyV0op\nF4rU5D7d7gDK4dS4wLmxaVyVo3FVTtTGFZFz7koppSoWqWfuSimlKuD45G6MiTHGrDXGpJbxmjHG\nvGiM2WqMWW+MucghcaUYY44ZY77zPR4NU0w7jTHf+475k37Kdo1XAHHZNV4NjTEfGmM2GmMyjTGX\nlnrdrvHyF5dd49WlxDG/M8bkGmP+VGqdsI9ZgHGFfcyMMfcbY9KNMRuMMe8ZY2qVet3asRIRRz+A\nB4B/A6llvDYUmAMYoDfwjUPiSilreRhi2gk0qeB1W8YrgLjsGq+3gTt9P9cAGjpkvPzFZct4lYoh\nBtiLt+ba9jELIK6wjhnQGtgB1PY9/y9wWzjHytFn7saYeGAY8EY5q1wLvCNeK4CGxpiWDojLqWwZ\nLycyxjQArsT7FZKISIGIHC21WtjHK8C4nGAAsE1ESt+IaPdnrLy47BAL1DbGxAJxwA+lXrd0rByd\n3IHngYcATzmvtwaySjzP9i2zmr+4AC7z/ao1xxjTPQwxAQiwwBiz2hgzqozX7Rovf3FB+MerHXAA\neMs3vfaGMaZOqXXsGK9A4gJ7Pl8l3Qi8V8Zyuz5jZ5QXF4RxzEQkB5gC7Ab24P1e6fmlVrN0rByb\n3I0xw4H9IrLa7lhKCjCuNUCCiJwPvAR8Gpbg4HIRuQAYAtxrjLkyTMf1x19cdoxXLHAR8KqIXAic\nBB4Ow3H9CSQuuz5fABhjagAjgA/CeVx//MQV1jEzxpyD98y8HdAKqGOMucXKY5bm2OSO94u5Rxhj\ndgL/AfobY94ttU4O0KbE83jfMlvjEpFcETnh+3k2UN0Y08TiuM6cLSAi+4FPgF6lVrFjvPzGZdN4\nZQPZIvKN7/mHeJNqSXaMl9+47Pp8lTAEWCMi+8p4zZbPmE+5cdkwZgOBHSJyQEQKgY+By0qtY+lY\nOTa5i8g4EYkXkbZ4f9VaJCKl/+f7HLjVd9W5N95fffbYHZcxpoUxxvh+7oV3nA9ZGZcxpo4xpt6Z\nn4GrgQ2lVgv7eAUSlx3jJSJ7gSxjTBffogFARqnV7Ph8+Y3LjvEq5SbKn/oI+5gFEpcNY7Yb6G2M\nifMddwCQWWodS8cqNlQ7ChdjzN0AIjINmI33ivNWIA+43SFxXQ/cY4wpAk4BN4rv8riFmgOf+D6/\nscC/RWSuA8YrkLjsGC+APwAzfL/Obwdud8B4BRKXXeN15j/oq4C7SiyzfcwCiCusYyYi3xhjPsQ7\nHVQErAWmh3Os9A5VpZRyIcdOyyillKo6Te5KKeVCmtyVUsqFNLkrpZQLaXJXSikX0uSulFIupMld\nKaVcSJO7Ukq50P8DaKNlY//LjQIAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11b860a58>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X[y==0,0], X[y==0,1], color=\"red\")\n",
    "plt.scatter(X[y==1,0], X[y==1,1], color=\"blue\")\n",
    "plt.plot(x1_plot, x2_plot)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nRK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11b6935c0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X_test[y_test==0,0], X_test[y_test==0,1], color=\"red\")\n",
    "plt.scatter(X_test[y_test==1,0], X_test[y_test==1,1], color=\"blue\")\n",
    "plt.plot(x1_plot, x2_plot)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11b654b38>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_decision_boundary(model, axis):\n",
    "    \n",
    "    x0, x1 = np.meshgrid(\n",
    "        np.linspace(axis[0], axis[1], int((axis[1]-axis[0])*100)).reshape(-1, 1),\n",
    "        np.linspace(axis[2], axis[3], int((axis[3]-axis[2])*100)).reshape(-1, 1),\n",
    "    )\n",
    "    X_new = np.c_[x0.ravel(), x1.ravel()]\n",
    "\n",
    "    y_predict = model.predict(X_new)\n",
    "    zz = y_predict.reshape(x0.shape)\n",
    "\n",
    "    from matplotlib.colors import ListedColormap\n",
    "    custom_cmap = ListedColormap(['#EF9A9A','#FFF59D','#90CAF9'])\n",
    "    \n",
    "    plt.contourf(x0, x1, zz, linewidth=5, cmap=custom_cmap)\n",
    "    \n",
    "plot_decision_boundary(log_reg, axis=[4, 7.5, 1.5, 4.5])\n",
    "plt.scatter(X[y==0,0], X[y==0,1])\n",
    "plt.scatter(X[y==1,0], X[y==1,1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### kNN的决策边界"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
       "           metric_params=None, n_jobs=1, n_neighbors=5, p=2,\n",
       "           weights='uniform')"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "\n",
    "knn_clf = KNeighborsClassifier()\n",
    "knn_clf.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.0"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "knn_clf.score(X_test, y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nRK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11bc05e10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_decision_boundary(knn_clf, axis=[4, 7.5, 1.5, 4.5])\n",
    "plt.scatter(X[y==0,0], X[y==0,1])\n",
    "plt.scatter(X[y==1,0], X[y==1,1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
       "           metric_params=None, n_jobs=1, n_neighbors=5, p=2,\n",
       "           weights='uniform')"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "knn_clf_all = KNeighborsClassifier()\n",
    "knn_clf_all.fit(iris.data[:,:2], iris.target)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAD8CAYAAAB0IB+mAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X2QVXeZJ/Dv0/cS6EBDGxPSBIKwFYwmqKAUw4K6SXwp\ngSiUxp1sJb7VrGhKLTLOjLsRy7yUWWtqplx7kp2kUHdNNhmtvBms0FjxBdcIRVJAMEI6joyY8NJA\nEqahGxpC9332j3tv972n7+nf79zz9jv3fD9VXel7zrnnPPekefrXv/Oc54iqgoiIWl9b2gEQEVEy\nmPCJiHKCCZ+IKCeY8ImIcoIJn4goJ5jwiYhywjrhi0hBRJ4XkacarLtGRE6KyJ7K1zejDZOIiMIq\nBth2PYBeANN91j+jqteHD4mIiOJgNcIXkTkAVgP4frzhEBFRXGxH+N8F8DUAHRNss1xEXgBwGMDf\nquo+7wYisg7AOgCYOnnyexZ0dQUMl4jCer39zWmHQCEcfGn3a6p6STPvNSZ8EbkewHFV3SUi1/hs\nthvAXFUdFJFVAJ4EsMC7kapuBLARABbPm6dbN2xoJmYiakLnTQV077s57TAopFuXTn652ffaTOms\nAPAxEfkzgB8DuE5EHqrdQFVPqepg5fseAJNE5OJmgyKi6DHZkzHhq+ptqjpHVecBuBHAr1S17idH\nRLpERCrfL63s9/UY4iWiJjyw6DNph0AOCFKlU0dEvggAqno/gBsA3CIiwwCGANyobMNJ5AQme6oK\nlPBV9dcAfl35/v6a5fcCuDfKwIhq9Qy0454THTg6XEBXcQRfuWgAqzqG0g7LeUz2VIt32pLzegba\ncderM9A3XIRC0DdcxF2vzkDPQHvaoTmt86ZC2iGQY5qe0iFKyj0nOnBW68cmZ7UN95zo4CjfxwOL\nPgOMK4ymvOMIn5x3dLjxSNVved5xGof8MOGT87qKI4GW5xmTPU2ECZ+c95WLBjBFSnXLpkgJX7lo\nIKWIiLKJc/jkvOo8Pat0/PEuWrLBhE+ZsKpjiAneB5M92eKUDhFRTjDhExHlBBM+EVFOMOETZRzn\n78kWEz4RUU4w4RMR5QTLMikR7HZJlD4mfIpdtdtltQFatdslACZ9ogRxSodiN1G3SyJKDhM+xY7d\nLuPDZmkUBBM+xY7dLoncwIRPsWO3y3hwdE9B8aItxY7dLoncwIRPiZRMsttltDi6p2Yw4eccSyaz\nh8memsU5/JxjyWR2dN5UYLKnUDjCzzmWTGbDA4s+A+xLOwrKOib8nOsqjqBvePyPAUsm3cARPUWJ\nCT/nvnLRQN0cPsCSSRcw0VMcmPBzjiWT7mGyp7hYJ3wRKQDYCeCwql7vWScAugGsAnAGwGdVdXeU\ngVJ8WDJJlA9BqnTWA+j1WbcSwILK1zoA94WMiyiwnoF2rHx5Jhb/2yysfHkmegba0w4psM6beLGc\n4mOV8EVkDoDVAL7vs8kaAA9q2Q4AnSIyK6IYiYyq9xP0DRehkNH7CbKW9Pm4QoqT7Qj/uwC+BqDk\ns342gIM1rw9VlhElgvcTEJkZE76IXA/guKruCnswEVknIjtFZOdrA6wCoei0wv0EvFhLcbMZ4a8A\n8DER+TOAHwO4TkQe8mxzGMDlNa/nVJbVUdWNqrpEVZdc3MGRF0Un6y2YOXdPSTAmfFW9TVXnqOo8\nADcC+JWqeicafwrg01K2DMBJVe2LPlyixrLcgvmBRZ/h3D0louk6fBH5IgCo6v0AelAuydyPclnm\n5yKJjshSVu8n4DQOJSlQwlfVXwP4deX7+2uWK4AvRRkYZcfdx6fj8YGpKKH8J+MnOk5jw8xTiceR\ntfsJmOwpabzTlkK5+/h0PDowFYAAKJdxlV8jlaRPRP7YHplCebwm2Y+RynJqhG2OKS0c4VMofjdm\n+C3PO7Y5pjRxhE+h+P0A8QdrPI7qKW38d0mhfKLjNAD1LNXKciJyCad0KJTqhVkXqnRcxtE9uYAJ\nv8WtO3QRnjs3efT10snnsHHOiUiPsWHmqdgTfM9Ae+Zq7IHyBVreVNX69vdvwc7j92Jw+BimFS/F\nkplfxhWdKxPfhwmndFrYWLKX0a/nzk3GukMXpRxZMFnthMlknw/7+7fgmb5vYXD4KADF4PBRPNP3\nLezv35LoPmww4bewsWRfS+pG/FmQ1U6YTPb5sPP4vRjRs3XLRvQsdh6/N9F92GDCJ+dlsRMm5+zz\nY3D4WKDlce3DBhM+OS9rnTCZ7PNlWvHSQMvj2ocNJvwWtnTyOTQqmSwvz44sdcJkss+fJTO/jIJM\nqVtWkClYMvPLie7DBqt0WtjGOScSqdKJWxY6YfICbX5VK2nCVNhEsQ8bTPgtbu2MIRw8URxNlGtn\nBE+SppLIJEomXe+EyWSfb1d0rgydnKPYhwkTfgurljNWK1yq5YwArJOnaR9RHCPrOI1DWcE5/BYW\nRTmjaR9ZLZmMCpM9ZQlH+C0sinJG0z6yWDIZBSZ6yiKO8FtYFOWMpn1krWQyCkz2lFVM+C0sinJG\n0z6yVDIZ1gOLPsNkT5nGKZ0WFkU5o2kfWSiZDIsll9QqmPBbXBTljKZ9uF4y2azRRM8nVFGLYMJv\nkivtel2JoxVxVJ++JFoG5wkTfhNcqT13JY4s67xpgmoijuxTVW0ZXO0iWW0ZDIBJv0m8aNsEV2rP\nXYkjqyZM9gDWX/1QQpFQI0m1DM4TJvwmuFJ77kocrYpTOulKqmVwnjDhN8GV2nNX4sgi0+ieyT59\nSbUMzhMm/Ca4UnvuShxEcUiqZXCe8KJtE1ypPXcljlbCkb07kmoZnCfGhC8iUwD8BsDkyvaPqert\nnm2uAbAJwIHKoidU9a5oQ3WLK7Xnzw9NwrHhAhTAseECnh+aVBfX3cen4/GBqSih/OfcJzpOY8PM\nU3X7SKK0Mwvlo0z27kmiZXCe2IzwzwG4TlUHRWQSgN+KyBZV3eHZ7hlVvT76EMnP3cen49GBqag+\nqLwEVF4DG2aeMq4HkintzEL5KJM95YFxDl/LBisvJ1W+vM/NoxQ8XpPMx0hluXk9kExpJ8tHidxg\nddFWRAoisgfAcQA/V9VnG2y2XEReEJEtInK1z37WichOEdn52gAvLIZVMiw3rQeSKe10rXzUW6HD\n0T3lhdVFW1UdAbBIRDoB/EREFqrq3ppNdgOYW5n2WQXgSQALGuxnI4CNALB43jz+lRBSGxon9TbL\n9UC5hLNvePyPQZSlnUkcoxlM9JQ3gcoyVbUfwFYAH/EsP1Wd9lHVHgCTROTiyKKkhj7RcRrjZ9e0\nsty8HkimtNPF8lEme8ojmyqdSwCcV9V+EWkH8CEAf+/ZpgvAMVVVEVmK8i+S1+MImMZUL7z6VeGY\n1gPJlHa6Vj7KZE95ZTOlMwvAAyJSQDlnPKKqT4nIFwFAVe8HcAOAW0RkGMAQgBtVtaWnbKIoM7Qp\nmQxrcft5/HZoBEeHC7i0OILF7ecj3T9g9zlcKWPtvKkwYVO0tx5+DCv+cDc6hg5joH02tl25Af86\n+wbr/dt0d2QHSEqLMeGr6gsAFjdYfn/N9/cCyE1HoyjKDG1KJsPuwybOsJ8lis+RBFMrBaCc7D/4\n+69i0kj5c08fOoQP/v6rAGCV9G26O7IDJKWJrRWaEEWZoU3JZNh92MQZ9rNE8Tni0nlTYfTLxoo/\n3D2a7KsmjQxhxR/utnq/TXdHdoCkNDHhNyGKMkObksmw+7CJM+xnieJzRM2U5P3aHncMHQ603Mum\nuyM7QFKamPCbEEWXSr8TH+R/iGkfNnGG/SxRfI4o2Y7mGxlonx1ouZdNd0d2gKQ0MeE3IYoyQ5uS\nybD7sIkz7GeJ4nNEIcjUDdB4lL/tyg04X2ivW3a+0I5tV26w2qdNd0d2gKQ0sVtmE6IoM7QpmQy7\nD5s4w36WKD5HGGFG9OuvfqiuRLN6YbbZKh2b7o7sAElpkrSqJxfPm6dbN9iNnMifqTw0C10qmxEm\n0YcRRQ3/4IE7sXVgE44XgJkjwLUdazBt/u3mN0Zo25Fv46X+J6AoQdCGt3V+HCsuuy3RGKg5ty6d\nvEtVlzTzXk7pZFi1pLJvuAiFjJZU9gy0W63PqrSSfRQGD9yJJ09vwrGiQEVwrCh48vQmDB64M7EY\nth35Nnr7H4NWLq0rSujtfwzbjnw7sRgoHUz4GWYqqWzFLpVxJvvufTfHfhfu1oFNONtWX8Z6tk2w\ndWBTrMet9VL/E4GWU+tgws8wU0mla10qw0pqZD9R4vcr6bR13Ocj+C2Pg/oUzfotp9bBhJ9hppLK\nVnjIedCbp8JYf/VDdQk9jqQ/0+fU+y2Pg/j8s/dbTq2D/4czzFRS6WKXyiDSmqsPO4qfyLUdazCl\nVF8oMaWkuLZjTWzH9Hpb58cDLafWwbLMDDOVVLrWpdKWCxdlTUnfW9Jpa9r827H2AFKt0qlW47BK\nJ39YlkmJ8Cbx/odHfNdlCVstU9LClGXmdoQftj7d5v1JtD92sc7eJoGnkuRf3An8pgc49e/A9DcB\n718FXNXUv5tYmer0k2qvbDqOaX3YVtM2x6Bgcpnww7YEtnl/Em2Do2jTHDVnR+sv7gR+9ggwXHke\nwKl/L78Gmkr6cY3sq3X6Z4vln5tjReDJ05uw9kB5Oiip9sqm45jWh201bRMDBZfLi7Zh69Nt3p9E\n22DX6uydTfZAeWQ/7Hn4y/D58vKA4pzGMdXpJ9Ve2XQc0/qwraZtjkHB5TLhh61Pt3l/Em2DXaqz\ndzrZA+URfZDlPuKeszfV6SfVXtl0HNP6sK2mbY5BweUy4YetT7d5fxJtg12ps3c+2QPlOfsgy1Ni\nqtNPqr2y6Tim9WFbTdscg4LLZcIPW59u8/4k2ganXWef1A1RkXj/KqA4qX5ZcVJ5uUNMdfo27ZW9\nN5A1w3Qc0/qwraZtjkHB5fKibdj6dJv3J9E2OM06+8wk+qrqhdmQVTrVRBrX1I6pTj9Ie2Wbu4b9\nmI5jWh+21XTQz0p2WIffpCjKIW32se7QRXju3OTR10snn8PGOSci+QxhZC7hxyCupB+2FNE0uu/e\ndzOKez+FTaUXcLRQQNfICNa0vRPDC/9voDj3/vHzeO6NXaMDmqUXvAcLF3wv0D4oOLZHTlgUbYdt\n9jGW7GX067lzk7Hu0EWRf6YgmOzLqlMnUbZiqJYiDg4fBaCjpYj7+7dY78P0i+iKAx/ED7EXfcUi\nVAR9xSJ+iL0o7v2U9TH2/vHz2PHGLpREABGURLDjjV3Y+8fPW++DkpfLKZ2wJiqHtB3l2+xjLNnX\nkroRf5LykugnSph+yT2qqZ6JShGDjPK7993sG2v3wKs4W6z/p3+2rQ2bhl/Aasv9P/fGLkA8P5si\neO6NXVhoHSUljSP8JkRRDulSSSWNCZuww474kyhFPFrw+dnzWd5IEmXHFD0m/CZEUQ7pSkmlrTyM\n7l3oixNlKaLf5+ka8fnZ81neSBJlxxQ9/v9pQhTlkDb7WDr5HBqVdpaXU5Rskn2cbZOrkihFXN9x\nCaaUPD97pRLWd1xivY+lF7wH8BZ8qJaXk7OY8JuwqmMI37zkJGYVhyFQzCoO45uXnAxUpWOzj41z\nTtQk/fJXGlU6rT66j2Nk3+wvhys6V+J9s76BacUuAIJpxS68b9Y3mi5FbPTZVl//Wdwx9c2YNTwM\nUcWs4WHcMfXNWH39Z633u3DB97DsgvegTRVQRZsqlrFKx3nGi7YiMgXAbwBMrmz/mKre7tlGAHQD\nWAXgDIDPquru6MO1Y1PuGLasclXHUOh69+eHJuHYcAEK4NhwAc8PTRq3z7UzhnDwRHE0zrUzov0c\nkYiiC+XTjwK/2wFoCZA24F3LgA9/MtJjbN7eg+5XenG0TdBVUqyf+3asXl5/45VfSWQ1gdvso6rZ\nnvlXdK6cMMH3HLgFR4aeG319WftSrJp/X902tZ0q8Uzn+PN10Uxg8PXy99JWfo36X1SbX+7Ft3bv\n8S0PXbjge6Ev0IbtyJmUrMRpYjPCPwfgOlV9F4BFAD4iIss826wEsKDytQ7AfUiJTbljFGWVYVW7\naZYq5ZYlCB4dmIq7j0+3jjOJz2Ec3Ve7UFZ70lS7UL640/4gTz8K7NleTvZA+b97tpeXR3SMzdt7\ncMfBXvQV2sqliIU23HGwF5u394wmOb+SyCumbTDuI4gwU0PeZA8AR4aeQ8+BW0ZfVztVTh86BIGO\nO182n2Pzy724Y9cvQpWHmphKUKMoUc1TnDaMCV/LBisvJ1W+vBPLawA8WNl2B4BOEZkVbah2bDpI\nutBl0qabpinOuD+H1VROFF0of7dj4uURHKP7lV6cbfOcq7Y2dL/SC6CchP1KIrv3brPaRyNRz/t7\nk32j5Y06VdaeL5vP0b13G86ODNdtE3WnyrAdOZOSlThtWM3hi0hBRPYAOA7g56r6rGeT2QAO1rw+\nVFnm3c86EdkpIjtfG4in34tNuaMLJZE2ZW2mOF34HJF0oVSfs1FdHsExjrZ5f7mOX356+Gjjbc4M\nWO+jEW/Sj7sayLcjZeV82XyO6mf2irI8NGxHzqRkJU4bVglfVUdUdRGAOQCWikhTU3equlFVl6jq\nkos74hlN25Q7ulASaVPWZoozzs9hfaE2ii6U4nM2qssjOEZXqXELkdrlXRc2/pmsLrfZh5+o78id\niG9Hysr5CnMuouxUGbYjZ1KyEqeNQFU6qtoPYCuAj3hWHQZwec3rOZVlibMpd0y7yyRg103TFKcL\nnyOSLpTv8l4S8iyP4Bj/adraBl0oS1g/9+2jr9cvXIEphfo6himFItYvXFFeP/ftjcsZa/YxkShG\n9pe1LzUub9SpsvZ82XyORuci6vLQsB05k5KVOG3YVOlcAuC8qvaLSDuADwH4e89mPwXwZRH5MYC/\nAHBSVfsij9aCTQfJNLtMVtl00zTF6cLniKQLZbUax69KJ8Qxqkl22nyM60L512+pr7BZ/ZZywuve\nuw1Hzwyg68IOrF+4YnT56uWrgO2wrtLxxhCFVfPvM1bpeDtVyvT6Kh3T56jGu+zS98ZaeRK2I2dS\nshKnDZteOrMAPCAiBZTz0iOq+pSIfBEAVPV+AD0ol2TuR7ks83MxxWslipLJJGyYecrYLtn0WZz4\nrFctCf8w8DnzgT/1lhN6x4zy64hNm387Poqah4EDAOqnWVafPo3VB4+M/WKZX//8gtWdM7H6hZ1j\n6985s/4gnvLRLf/hf4y7mhX24d/eEsxmrF6+yviLylQeGgXTMUzrkyqHDBunK3LZHtn78G+gPBUS\n9OapVpX4jVbeB4wD5SmIj/zn8i8S03oD62ZoYeNosP58oR2/eMd3RhO298HcQPnP/+rNVd6Hfzfa\nh0mjfQQ5X1UutJqYiOlctiq2Rw7IhbJMqmEqu4zwAeSxxtFgvffB3Uk8/NtUlmkrqYvMzcpSOaQr\ncpnwnShndFQqbRRMZZchyzInSlx1o9iwcfisry2TTOLh36ayzCBcTvpZKod0RS4TvgtlmVTDVHaZ\n1APIw8bhs762TDLuh3+vv/qh8kXaieIMyNWkn6VySFfkMuE7Uc7omFQfSG4qu4ygLNNqlB82jgbr\nvQ/ujurh3xPW9Wfkge1hZakc0hW5fOKVE+WMDnCmC6ap7DKCskyrUWrYOGrW66n+hhU2UTz8u/az\nNHzSVkQPbK/VbCO4OGWpHNIVuazSyStnEnxCvAlqoqQV9bRFnMnR99GFEzzWMCquJf08ClOlk8sR\nPrln88u9vjc8ATC3T/bsY2qxC0tmvrlutBdJQjTEMRbD/6zEMH7Eaaod33bk23ip/wkoShC04W2d\nH8eKy24bXb/l6SlY+aevjxu9R57sG7SkXn919pJ+ErX6WWmPzISfEy6P7quteKvdGfvODOCOXb8A\nULn7tdo+uaraPhkYTbbefVRb1AIYl/SBJkf0hjhsYvDWjnu32Xbk2+jtf2zsECiNvl5x2W2jNfao\nll1WWx8D4W9+q+W9p6D2OMhOwjed76wcIyq5vGhLbmnUivfsyPBoW2Jj+2SffURek22IwyYGU+34\nS/1PNDxEdblfjf2pX/4/dO+7ue4rlAnuOUiyEVxYSdTqZ+l+ACb8nOh/2N2SU79WvKPLTe2TAfSd\nGWy4SaQ12YY4bFoKm2rH1adxdnV5kDr9UEk/irbXDkiiVj9L9wMw4eeIq0nf1JbY1D65e9/NydRk\nG+KwaSlsilN8/klWl4et07eW1L0PMUvi5yJL9wMw4eeMi0nf1JZ4ovbJ1VFsIjXZhjiu7PxvxhhM\ncb6t8+MND1FdblunX9X0KH+CWv5IpowSksTPRZbuB+BF2xzqf3jEqYu4prbEE7ZP3ldelUhNtk8c\n3bM3Wcdg2qZajeNXpWNTpx/GWCK/GW9d+N7xx9FojpOUJH4usnQ/ABM+NSy/i7Tiw4KpLTE+/Mlx\nZZhehUP/jDNSfgzDmfN9KBz6Z6DBP7oJLziazkWjOPaNfRtFm9xLL1yEg4O/xeDwMUwtzsSlFy6q\nW/+vs2+ILMFPJKnjxM2FNs+u4JRODtWN7qvld7UNwH72SHl5UiKI4cDej+KXchglEUAEJRH8Ug7j\nwN6PJhqHSbWEb3D4KAAdLeHb37/Fan3cslSBQ8Ex4Tuu2uOm9itSSbUejjmGrXIYEM/DuUXKy2tM\nmMwSOBemEj5XSvyY9FsTp3Qc5pfcI036LpTfhYih2i7Bp2DSd3nUcdgylfC5VOLnYv8cCocjfEcl\ndlHVhfK7kDGsv/oh3x/kNoxNUxhHrQmcC1MJn2slfhzptxYm/LxzoZVuBDF88oKpgLcRoGp5eYJx\nmJhK+Fws8WPSbx1M+A5KtGTyqiXlZ53WPsQj4LNPXYjhG2u/gL+8YCraVAFVtKniLy+Yim+s/UKi\ncZhc0bkS75v1DUwrdgEQTCt21T2D1bQ+LUz6rYHtkR3jUn18pMKWftq8P4Hy0kZdPfcP2j9vNg1R\nJmvO6TeWZLfMMO2RmfBT1LLJ3cvbeREoT5XYjp5t3h/2GBa83TCB8h3Byy69I/URuEmW+v1njbdb\nJlCehovrL7MwCZ9TOgmKtbzSZWHLHW3en0BJpV9XTxe7IsaNUzxjXCmltcGEn4DcJXivsOWONu9P\noKTSphumq+IYkTPpl7lUSmvChB+j3Cf6qrDljjbvT6Ck0qYbpss4DRMP10ppJ8KEHxMm+hphyx1t\n3p9ASWWjrp5pl0ymjaN8N0tp/fBO2xgw2XtUL5o2W0Fj8/6wx7BQ7d75rd17nO+K6CeJB53nTUt1\nyxSRywE8COBSAApgo6p2e7a5BsAmAAcqi55Q1buiDTWfjA/3NnGgE6YVQ5ybp05F9+WX4eiZjvJ5\nmDoVq737uGpJ7J9t/+DduPGt4fYxeOBObB3YhOMFYOYIcG3HGkybf3s0AfrwJvnQP1eefed9uqiV\numUOA/gbVb0KwDIAXxKRqxps94yqLqp85TbZRzm6r5YB9p0ZgGLs4d6bX+6124ELnTBt4jCsD30e\nHDJ44E48eXoTjhUFKoJjRcGTpzdh8MCdsR63NiG30vmkYIwJX1X7VHV35fsBAL0AIn6eWmuIeirH\n+HBvExc6YdrEYVgf+jw4ZOvAJpxtq+/qebZNsHVgU+zHrib9OM4np4myIdBFWxGZB2AxgGcbrF4u\nIi+IyBYRudrn/etEZKeI7HxtoHGJG40xPtzbxIVOmDZxGNaHPg8OOe4zJvBbHodWOp8UjPVFWxGZ\nBuBxALeq6inP6t0A5qrqoIisAvAkgAXefajqRgAbgfKdtk1H7aA4LtR2XdiBvgb/CP3KA8eZ/qbG\nyTTpB1Gb4jCsD30eLEx0MdM7P+3dLsj89cwR4FiDf3UzE3rUcPe+m9F14fdjP5/kJqsRvohMQjnZ\nP6yqT3jXq+opVR2sfN8DYJKIXBxppDlkfLi3iQudMG3iMKwPfR58VB/GPTrV0SBxR30x8tqONZhS\nqh/rTCkpru1YE+lxJtLoYetRnE9O67jPpkpHAPwAQK+qfsdnmy4Ax1RVRWQpyr9IXo80UofFVYZp\nfLi3SQKlipHEYVgf+jx4+CVx24Tl/Wug9nvTL4hp82/H2gNIvEqnlreMcNaF00KdT8oOY/M0EXkv\ngGcA/B5jDxD6OoC5AKCq94vIlwHcgnJFzxCAr6rq9on22yrN01hznz1BE34UvyBcx46a2RGmeZpx\nhK+qvwUghm3uBeBep6BWkJU6epOnHwV+twPQEiBtwLuWAR/+ZNpR1fGO3KNKXKZk6kKCrMbAaZnW\nxjttQ4h9dO9t+VutTweylfSffhTYU/MHn5bGXjuW9GsldUNRmIvAUWPib23spdOkRKZyXKmjD+t3\nO4ItT1Gjipykk5/1M3hj5MJfHRQ9jvCbkNi8vSt19GFpKdhyB6WVfKvHjSsBcySfL0z4LnOljj4s\naWuc3MWtPzBdTn5xXFuo7svlz03RcutfXAYkWpXjSh19WO9aFmw5TSjt6R7KLo7wA0i8BNOVOvqw\nqhdmHa/SyZq4Rv3UupjwffQMtOOeEx04OlzAZTNK+LvrBrEWZ81vjJqp5W9WyjbnzAf+1FuOs2NG\n+XXKvPPjiU1vxPD/LEzy57ROfjDhN9Az0I67Xp2Bs1qe8Tp8soDbnir3GVn7jhSSvp+slG06Fmeq\nyS2Bc+FSmSe5hXP4Dfyvc9NHk33V0Pk2/MOvpqUUkY+slG1mJc4kpHAukp7z518L7uIIv0Z1jv7I\nXY1/Dx456djvx6yUbWYkzkQSVYrngnP+xIRfUXtB9rIZJRw+Of4C7WUzHKsbz0rZpuNxJjoideRc\ncBSeT44NWZPXeVNhXPXN3103iPZJ9cm9fVL5wq1TslK2mZU4k8BzQSnK7Qh/ohLL6oXZf/jVNBw5\n2TZWpePSBVsgO2WbWYkzCTk5F3ywuZtymfBt6unXvuOsewm+EVPZpisyEufm7T3ofqUXR9sEXSXF\n+rlvx+rlAUbfNiWXGTkX1HpyNaXTaPqGqGrz9h7ccbAXfYU2qAj6Cm2442AvNm+3rKCpllzWPqv3\nZ4+Ul+cQrxO4JxcJn4mebHS/0ouzbfX/JM62taH7lV67HbD8lBzX8gmfiZ5sHW1r/Jwfv+XjZKT8\nNEkc5bvACOg7AAAHfUlEQVSlZefwmegpqK6Soq8wPrl3lSZ+DOgoR0ouify03Aif0zfUrPVz344p\npfpy3CmlEtbPtXy4N0suG+Io3x0tNcJnoqcwVi9fBWxH81U6OSm5pOxqmYTPZE9RWL18VbAyTC+W\nXJLDWmJKh8meyG2c1nFDpkf4TPRERPYyO8JnsiciCiaTCZ/JnogouMwlfCZ7IqLmZCrhM9kTZRcv\n3KbPmPBF5HIR2SoiL4rIPhFZ32AbEZF/EpH9IvKCiLw76kCZ7ImIwrGp0hkG8DequltEOgDsEpGf\nq+qLNdusBLCg8vUXAO6r/Dc0JnoDm3a8RI5gn/x0GUf4qtqnqrsr3w8A6AUw27PZGgAPatkOAJ0i\nMitscEz2BmzHS0QBBJrDF5F5ABYDeNazajaAgzWvD2H8L4VAmOwtsB0vEQVgnfBFZBqAxwHcqqqn\nmjmYiKwTkZ0isvO1gQHf7ZjsLbEdL2UQL96mxyrhi8gklJP9w6r6RINNDgO4vOb1nMqyOqq6UVWX\nqOqSizs6Gh6LyT4Av7a7bMdLRA3YVOkIgB8A6FXV7/hs9lMAn65U6ywDcFJV+4IGw2QfENvxElEA\nNlU6KwB8CsDvRWRPZdnXAcwFAFW9H0APgFUA9gM4A+BzQYJgom8S2/FSRrFaJx2iavk0n4gtnjdP\nn3/xm6kcm4jcwKQf3K1LJ+9S1aZGdandaVu4KK0jExHlU6ZaKxARUfOY8IkoNSzRTBYTPhFRTjDh\nExHlBBM+EVFOMOETEeUEEz4RUU4w4RMR5QQTPhFRTjDhExHlBBM+EVFOMOETEeUEEz4RUU4w4RMR\n5QQTPhFRTjDhE1Gq2DEzOUz4REQ5wYRPRJQTTPhElDpO6ySDCZ+IKCeY8ImIcoIJn4icwGmd+DHh\nExHlBBM+EVFOMOETkTM4rRMvJnwiopxgwiciygljwheR/y0ix0Vkr8/6a0TkpIjsqXx9M/owiYgo\nLJsR/g8BfMSwzTOquqjydVf4sIgorziPHx9jwlfV3wA4kUAsREQUo2JE+1kuIi8AOAzgb1V1X6ON\nRGQdgHWVl+dk6l81nCZyzMUAXks7CAuMM1pZiDMLMQJNxflXsQRikJXzeWWzbxRVNW8kMg/AU6q6\nsMG66QBKqjooIqsAdKvqAot97lTVJcFDThbjjBbjjE4WYgQYZ9TCxBm6SkdVT6nqYOX7HgCTROTi\nsPslIqJohU74ItIlIlL5fmlln6+H3S8REUXLOIcvIj8CcA2Ai0XkEIDbAUwCAFW9H8ANAG4RkWEA\nQwBuVJt5ImBjs0EnjHFGi3FGJwsxAowzak3HaTWHT0RE2cc7bYmIcoIJn4goJxJJ+CJSEJHnReSp\nButERP5JRPaLyAsi8u4kYgoYozPtI0TkzyLy+0ocOxusd+V8muJM/ZyKSKeIPCYiL4lIr4j8R896\nV86lKU4XzuWVNcffIyKnRORWzzapn0/LOFM/n5U4/lpE9onIXhH5kYhM8awPfj5VNfYvAF8F8C8o\n1/J7160CsAWAAFgG4NkkYgoY4zWNlqcU558BXDzBelfOpynO1M8pgAcA/NfK9xcA6HT0XJriTP1c\neuIpADgK4C0unk+LOFM/nwBmAzgAoL3y+hEAnw17PmMf4YvIHACrAXzfZ5M1AB7Ush0AOkVkVtxx\n1bKIMUtSP59ZICIzALwfwA8AQFXfUNV+z2apn0vLOF3zAQD/pqove5anfj49/OJ0RRFAu4gUAVwI\n4IhnfeDzmcSUzncBfA1AyWf9bAAHa14fqixLkilGoNI+QkS2iMjVCcXViAL4hYjsknKrCi8Xzidg\njhNI95zOB/AqgP9Tmcr7vohM9Wzjwrm0iRNw5+cTAG4E8KMGy104n7X84gRSPp+qehjAPwJ4BUAf\ngJOq+rRns8DnM9aELyLXAziuqrviPE4YljHuBjBXVd8J4B4ATyYSXGPvVdVFAFYC+JKIvD/FWCZi\nijPtc1oE8G4A96nqYgCnAfz3hGOwYRNn2udylIhcAOBjAB5NKwYbhjhTP58i8iaUR/DzAVwGYKqI\n3Bx2v3GP8FcA+JiI/BnAjwFcJyLe3qeHAVxe83pOZVlSjDGqQ+0jKr/5oarHAfwEwFLPJmmfTwDm\nOB04p4cAHFLVZyuvH0M5sdZy4Vwa43TgXNZaCWC3qh5rsM6F81nlG6cj5/ODAA6o6quqeh7AEwCW\ne7YJfD5jTfiqepuqzlHVeSj/+fQrVfX+lvopgE9XrjgvQ/lPl7444woaozjSPkJEpopIR/V7AB8G\n4O04mur5tI0z7XOqqkcBHBSRaufBDwB40bNZ6ufSJs60z6XHf4H/NEnq57OGb5yOnM9XACwTkQsr\nsXwAQK9nm8DnM6r2yIGIyBeB0dYMPShfbd4P4AyAz6URk5cnxmbbR0TtUgA/qfwsFgH8i6r+zMHz\naROnC+f0KwAervx5/ycAn3PwXNrE6cK5rP5y/xCAL9Qsc+58WsSZ+vlU1WdF5DGUp5eGATwPYGPY\n88nWCkREOcE7bYmIcoIJn4goJ5jwiYhyggmfiCgnmPCJiHKCCZ+IKCeY8ImIcuL/A6Lx1/rmSTam\nAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11bb0db70>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 从图中可得，两个区域弯弯曲曲，非常复杂。这个就象征着可能存在过拟合\n",
    "plot_decision_boundary(knn_clf_all, axis=[4, 8, 1.5, 4.5])\n",
    "plt.scatter(iris.data[iris.target==0,0], iris.data[iris.target==0,1])\n",
    "plt.scatter(iris.data[iris.target==1,0], iris.data[iris.target==1,1])\n",
    "plt.scatter(iris.data[iris.target==2,0], iris.data[iris.target==2,1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nSE78f65Cz9fqhPhhAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11b999b00>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# knn中邻居数k越大，模型越简单，决策边界越整齐，越清晰。\n",
    "knn_clf_all = KNeighborsClassifier(n_neighbors=50)\n",
    "knn_clf_all.fit(iris.data[:,:2], iris.target)\n",
    "\n",
    "plot_decision_boundary(knn_clf_all, axis=[4, 8, 1.5, 4.5])\n",
    "plt.scatter(iris.data[iris.target==0,0], iris.data[iris.target==0,1])\n",
    "plt.scatter(iris.data[iris.target==1,0], iris.data[iris.target==1,1])\n",
    "plt.scatter(iris.data[iris.target==2,0], iris.data[iris.target==2,1])\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}